Tenía una aplicación express y usé esta aplicación en mi clúster de Kubernetes.
Esta aplicación es un servicio de autenticación para mi estudio de arquitectura de microservicios.
Uso el comando de desarrollo Skaffold para aplicar Kubernetes para esta aplicación.
Mi Dockerfile es así:
FROM node:alpine WORKDIR /app COPY package.json . RUN npm install COPY . . CMD ["npm", "start"]Y lo ejecuto con el comando "Scaffold dev"
Y recibo un error como ese:
... ... Deployments stabilized in 3.752 seconds Watching for changes... [auth] npm notice [auth] npm notice New patch version of npm available! 7.5.1 -> 7.5.4 [auth] npm notice Changelog: <https://github.com/npm/cli/releases/tag/v7.5.4> [auth] npm notice Run `npm install -g npm@7.5.4` to update! [auth] npm notice [auth] npm ERR! path /app [auth] npm ERR! command failed [auth] npm ERR! signal SIGTERM [auth] npm ERR! command sh -c node server.js [auth] [auth] npm ERR! A complete log of this run can be found in: [auth] npm ERR! /root/.npm/_logs/2021-02-19T16_46_28_956Z-debug.logY mi archivo package.json:
{ "name": "authservice", "version": "1.0.0", "description": "Auth Service", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node server.js" }, "keywords": [ "auth", "user" ], "author": "", "license": "ISC", "dependencies": { "bcrypt": "^5.0.0", "body-parser": "^1.19.0", "dotenv": "^8.2.0", "express": "^4.17.1", "express-rate-limit": "^5.2.3", "jsonwebtoken": "^8.5.1", "mongoose": "5.10.19", "morgan": "^1.10.0", "multer": "^1.4.2" }, "devDependencies": { "nodemon": "^2.0.6" } }¿Cómo puedo solucionar este error?
Supongo que está especificando incorrectamente su secuencia de comandos en el package.json o su secuencia de comandos no es server.js .
Una reproducción mínima de su pregunta funciona:
Usando el ejemplo de la guía de introducción de Node.JS con un ajuste menor: https://nodejs.org/en/docs/guides/getting-started-guide/
NOTA Cambiar
const hostname = '127.0.0.1';aconst hostname = '0.0.0.0';Esto es necesario para acceder a la aplicación en contenedores desde el host.
Agregar un paquete.json porque tiene uno y mostrar npm start :
package.json :
{ "name": "66281738", "version": "0.0.1", "scripts": { "start": "node app.js" } }NOTA Creo que
npm startpor defecto es"start": "node server.js"
Usando su Dockerfile y:
QUESTION="66281738" docker build --tag=${QUESTION} --file=./Dockerfile . docker run --interactive --tty --publish=7777:3000 ${QUESTION}Rendimientos:
> 66281738@0.0.1 start > node app.js Server running at http://0.0.0.0:3000/NOTA
docker runvincula el puerto:3000del contenedor al:7777del host solo para mostrar que no es necesario que sean iguales.
Entonces:
curl --request GET http://localhost:3000/Rendimientos:
Hello World